package control.authcore;

import java.util.List;
import java.util.function.Supplier;

/**
 * Auth data
 *
 * @description: 鉴权用户数据提供
 *               实现此接口可扩展
 * @author: cyj
 * @date 2020 -10-22 18:10:56
 */
public interface IAuthData {

    /**
     * Offer roles list
     *
     * @return the list
     * @description: 提供角色
     */
    List<String> offerRoles();

    /**
     * Offer auths list
     *
     * @return the list
     * @description: 提供权限
     */
    List<String> offerAuths();

    /**
     * Roles t
     *
     * @param supplier supplier
     * @return the t
     * @description: 提供角色
     */
    default <T> T roles(Supplier<T> supplier) {
        return supplier.get();
    }

    /**
     * Auths t
     *
     * @param supplier supplier
     * @return the t
     * @description: 提供权限
     */
    default <T> T auths(Supplier<T> supplier) {
        return supplier.get();
    }
}
